今天我們要來介紹兩個基本的影像濾波技術-平均濾波與高斯濾波
平均濾波(Average Filtering)是最簡單的影像濾波技術,可對數位影像進行模糊化(Blur)處理。也經常稱為Box濾波器(Box Filter)。
程式碼如下:
import numpy as np
import cv2
img1 = cv2.imread("D:\Desktop\IThome\lena.bmp", -1)
img2 = cv2.blur(img1, (5, 5))
img3 = cv2.blur(img1, (11, 11))
img4 = cv2.blur(img1, (20, 20))
cv2.imshow("Orignial", img1)
cv2.imshow("5x5", img2)
cv2.imshow("11x11", img3)
cv2.imshow("20x20", img4)
cv2.waitKey()
上述範例中使用OpenCV提供的blur涵式,即可處理影像的平均濾波,其中後面的參數(5,5)代表5x5的大小。結果如下
平均濾波會使的影像變模糊,細節變平坦,因此也經常稱為影像模糊化(Image Blur)。當濾波器的大小愈大,模糊化的效果愈明顯。
高斯濾波(Gaussian Filtering)採用二維的高斯函數作為濾波器的係數,高斯函數的定義如下:
這是個很複雜的函數,不過我們只需要知道如何使用就好。高斯濾波與平均濾波類似,可對數位影像進行模糊化,或是消除雜訊。一個高斯濾波的程式碼如下:
import numpy as np
import cv2
img1 = cv2.imread("D:\Desktop\IThome\lena.bmp", -1)
img2 = cv2.GaussianBlur(img1, (5, 5), 0)
cv2.imshow("Orignial", img1)
cv2.imshow("5x5", img2)
cv2.waitKey()
此程式利用OpenCV提供的GaussianBlur涵式,進行數位影像的高斯濾波。若高斯濾波與平均濾波的大小一樣,則高斯濾波通常會保留較多的資訊。結果如下:
今天對兩個入門的濾波技術有基礎理解,若有興趣的讀者也可自行設計高斯濾波,並呼叫OpenCV提供的二維濾波涵式Filter2D進行高斯濾波。
那我們明天見!